<?php
/**
 * Контроллер параметров продуктов
 * 
 * Управление параметрами продутов
 * @author Anton Zavidov
 * @package myLiveShop
 */

/**
 * Класс контроллера для управления тегами
 *
 */
class ControllerParam extends Element{
	/**
	 * Констуктор
	 *
	 * @param string $className имя контроллера
	 */
	public function __construct($className=null){
		$this->name='param';
		parent::__construct($className?$className:__CLASS__);
	}
	/**
	 * Создание
	 *
	 */
	public function save($data){
		Core::mustLogin();
		$result = true;
		foreach ($data as $key => $item) {
			$id = $item[ModelParam::F_PARAM_ID];
			unset($item[ModelParam::F_PARAM_ID]);
			$result = $this->model()->save($item,$id);
			if(is_array($result)){
				break;
			}
		}
		if(is_array($result)){
        	$this->view->result($result);
        }else{
        	$this->view->result(false);
        }
	}
	//сохранение параметров для категории
	public function saveForCategory($category_id, $params, $isNew = false){
		if($isNew){
			//для новой категории
			foreach ($params as $key => $item) {
				$this->model()->save($item);
			}
			return;
		}
		//для редактирования категории
		$oldParams = array();
		foreach ($this->model()->load(false,ModelParam::F_PARAM_ID,array(
			'where' => ModelParam::F_CATEGORY_ID . '=' . $category_id
		)) as $key=>$item){
			$oldParams[(int) $item[ModelParam::F_PARAM_ID]] = true;
		}
		foreach ($params as $key => $item) {
			$id=false;
			if(isset($item[ModelParam::F_PARAM_ID])){
				unset($oldParams[$item[ModelParam::F_PARAM_ID]]);
				$id = $item[ModelParam::F_PARAM_ID];
				unset($item[ModelParam::F_PARAM_ID]);
			}
			$this->model()->save($item,$id);

		}
		if(count($oldParams)){
			foreach ($oldParams as $key => $item) {
				$this->model()->delete($key);
				//данные для этого параметра удаляет триггер
			}
		}
	}
	public function getListByCategory($category_id = false){
		$this->view->set('list',$this->model()->load(false,'*',array(
			'where' => ModelParam::F_CATEGORY_ID . '=' . Requestlocal::getInt('category_id',$category_id),
			'order' => ModelParam::F_SORT
		)));
		$this->build($view);
	}
	/**
	 * Удаление
	 *
	 */
	public function delete(){
		Core::mustLogin();
		parent::delete(true);
		Core::redirect(base64_decode(Vars::_(Core::REFERER)),T::_('Deleted'));
	}
}